<template>
  <div class="article-page">
    <!-- 动态传参 - $router.push(`/detail/${item.id}`) 
      ?id=(item.id)
     -->
    <div
      class="article-item"
      v-for="item in list"
      :key="item.id"
      @click="$router.push(`/detail?id=${item.id}`)"
    >
      <div class="head">
        <img :src="item.creatorAvatar" alt="" />
        <div class="con">
          <p class="title">{{ item.stem }}</p>
          <p class="other">{{ item.creatorName }} | {{ item.createdAt }}</p>
        </div>
      </div>
      <div class="body">
        {{ item.content }}
      </div>
      <div class="foot">点赞 {{ item.likeCount }} | 浏览 {{ item.views }}</div>
    </div>
  </div>
</template>

<script>
import axios from "axios";
/**
 * 首页 文章列表渲染功能
 * 1. 安装axios
 * 2. 什么时候发请求 - 最早能操作数据的时候发送请求（created）
 * 3. 找对应接口文档 找到接口是什么 发请求
 *      请求地址: https://mock.boxuegu.com/mock/3083/articles
        请求方式: get 
 * 4. 发送请求能拿到数据
       4.1 导入axios
       4.2 发送请求
 * 5. 模板里渲染数据，data里定义数据
 * 6. 发送后拿到结果赋值给定义的数据
 * 7. 渲染
 * 
 * 跳转功能
 * 1. 要配置我们动态路由 - 传入id(params) 区分到底是哪篇文章 （作业-练习query传）
 * 2. 点击一篇文章跳到对应的详情页
 *      点击事件 - 简写的方式跳转页面
 *      $router跳？ $route？ $router跳
 *      $router.push(`/detail/${文章id}`)
 * 3. 详情页接受id
 *      接受数据 $router? $route?
 *      $route接受 动态路由接受怎么接 params
 *      因为之后要通过id发请求渲染详情页，所以我们可以在最早的生命周期获取id打印下
 * 4. 回退 - so easy
 *      $router 跳转相关 $route完整路由信息 路径信息
 */
export default {
  data() {
    return {
      list: [],
    };
  },
  name: "ArticlePage",
  async created() {
    // 发送请求 最早能拿到数据
    const {
      data: {
        result: { rows },
      },
    } = await axios.get("https://mock.boxuegu.com/mock/3083/articles");
    // console.log(res.data.result.rows);
    console.log(rows);
    this.list = rows;
  },
  destroyed() {
    console.log('我嗝屁了');
  },
  // 激活 - 点到这个tab显示出这个组件就是激活
  activated () {
    console.log('轻轻的我来了');
  },
  // 未激活 - 切换其他tab切走
  deactivated() {
    console.log('悄悄的我走了');
  }
};
</script>
<style lang="less" scoped>
.article-page {
  background: #f5f5f5;
}
.article-item {
  margin-bottom: 10px;
  background: #fff;
  padding: 10px 15px;
  .head {
    display: flex;
    img {
      width: 40px;
      height: 40px;
      border-radius: 50%;
      overflow: hidden;
    }
    .con {
      flex: 1;
      overflow: hidden;
      padding-left: 15px;
      p {
        margin: 0;
        line-height: 1.5;
        &.title {
          text-overflow: ellipsis;
          overflow: hidden;
          width: 100%;
          white-space: nowrap;
        }
        &.other {
          font-size: 10px;
          color: #999;
        }
      }
    }
  }
  .body {
    font-size: 14px;
    color: #666;
    line-height: 1.6;
    margin-top: 10px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }
  .foot {
    font-size: 12px;
    color: #999;
    margin-top: 10px;
  }
}
</style>